const fs = require('fs').promises;
const path = require('path');
const { pinyin } = require('pinyin-pro');

async function writeArrayToFile(array, filePath) {
  try {
    // 将数组元素连接成一个以换行符分隔的字符串
    const dataToWrite = array.join('\n');

    // 写入文件
    await fs.writeFile(filePath, dataToWrite);

    console.log(`成功写入文件: ${filePath}`);
  } catch (err) {
    console.error('写入文件时出错:', err);
  }
}
function capitalizeFirstLetter(string) {
  if (typeof string !== 'string' || string.length === 0) {
    return string;
  }
  return string.charAt(0).toUpperCase() + string.slice(1);
}
// 获取拼音并转换为驼峰命名
async function getCamelCaseName(chineseName) {
  const noSpacesStr = chineseName.replace(/\s+/g, '');
  const pinyinArray = pinyin(noSpacesStr, { toneType: 'none', type: 'array', v: true });
  let result = '';
  pinyinArray.forEach((item, index) => {
    if (index === 0) {
      result += item;
    } else {
      result += capitalizeFirstLetter(item);
    }
  });
  return result;
}

// 处理文件夹中的所有 .png 文件
async function processPngFiles(dirPath) {
  try {
    const files = await fs.readdir(dirPath);
    const importStatements = [];

    for (const file of files) {
      if (path.extname(file).toLowerCase() === '.png') {
        const oldFilePath = path.join(dirPath, file);
        const fileNameWithoutExt = path.basename(file, path.extname(file));

        // 如果文件名包含中文，则转换为驼峰命名
        if (/[\u4e00-\u9fa5]/.test(fileNameWithoutExt)) { // 匹配中文字符
          const newFileName = await getCamelCaseName(fileNameWithoutExt);
          const newFilePath = path.join(dirPath, `${newFileName}.png`);

          // 重命名文件
          await fs.rename(oldFilePath, newFilePath);

          // 创建导入语句
          importStatements.push(`import ${newFileName} from '@/assets/icon-lib/${newFileName}.png';`);
        } else {
          // 对于非中文文件名，直接创建导入语句
          importStatements.push(`import ${fileNameWithoutExt} from '@/assets/icon-lib/${file}';`);
        }
      }
    }

    // 使用示例：将 importStatements 数组写入到 './output.txt' 文件中
    writeArrayToFile(importStatements, './output.txt');
  } catch (err) {
    console.error('Error processing files:', err);
  }
}

// 使用示例
processPngFiles('D:\\Projects\\webProjects\\customize-artboards\\src\\assets\\icon-lib'); // 替换为你的 assets 文件夹路径